<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>GimpVector: GIMP 3 Math Library Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
<link rel="home" href="index.html" title="GIMP 3 Math Library Reference Manual">
<link rel="up" href="pt01.html" title="Part I. GIMP Math Library">
<link rel="prev" href="libgimpmath3-GimpMatrix.html" title="GimpMatrix">
<link rel="next" href="api-index-full.html" title="Index">
<meta name="generator" content="GTK-Doc V1.33.0 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                  <a href="#libgimpmath3-GimpVector.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="pt01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="libgimpmath3-GimpMatrix.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="api-index-full.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="libgimpmath3-GimpVector"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="libgimpmath3-GimpVector.top_of_page"></a>GimpVector</span></h2>
<p>GimpVector — Utilities to set up and manipulate vectors.</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
<a name="libgimpmath3-GimpVector.functions"></a><h2>Functions</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="functions_proto_type">
<col class="functions_proto_name">
</colgroup>
<tbody>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-new" title="gimp_vector2_new ()">gimp_vector2_new</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-set" title="gimp_vector2_set ()">gimp_vector2_set</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gdouble</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-length" title="gimp_vector2_length ()">gimp_vector2_length</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gdouble</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-length-val" title="gimp_vector2_length_val ()">gimp_vector2_length_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-mul" title="gimp_vector2_mul ()">gimp_vector2_mul</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-mul-val" title="gimp_vector2_mul_val ()">gimp_vector2_mul_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-normal" title="gimp_vector2_normal ()">gimp_vector2_normal</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-normal-val" title="gimp_vector2_normal_val ()">gimp_vector2_normal_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-normalize" title="gimp_vector2_normalize ()">gimp_vector2_normalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-normalize-val" title="gimp_vector2_normalize_val ()">gimp_vector2_normalize_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-neg" title="gimp_vector2_neg ()">gimp_vector2_neg</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-neg-val" title="gimp_vector2_neg_val ()">gimp_vector2_neg_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-add" title="gimp_vector2_add ()">gimp_vector2_add</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-add-val" title="gimp_vector2_add_val ()">gimp_vector2_add_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-sub" title="gimp_vector2_sub ()">gimp_vector2_sub</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-sub-val" title="gimp_vector2_sub_val ()">gimp_vector2_sub_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gdouble</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-inner-product" title="gimp_vector2_inner_product ()">gimp_vector2_inner_product</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gdouble</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-inner-product-val" title="gimp_vector2_inner_product_val ()">gimp_vector2_inner_product_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-cross-product" title="gimp_vector2_cross_product ()">gimp_vector2_cross_product</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-cross-product-val" title="gimp_vector2_cross_product_val ()">gimp_vector2_cross_product_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-rotate" title="gimp_vector2_rotate ()">gimp_vector2_rotate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-rotate-val" title="gimp_vector2_rotate_val ()">gimp_vector2_rotate_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-new" title="gimp_vector3_new ()">gimp_vector3_new</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-set" title="gimp_vector3_set ()">gimp_vector3_set</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gdouble</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-length" title="gimp_vector3_length ()">gimp_vector3_length</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gdouble</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-length-val" title="gimp_vector3_length_val ()">gimp_vector3_length_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-mul" title="gimp_vector3_mul ()">gimp_vector3_mul</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-mul-val" title="gimp_vector3_mul_val ()">gimp_vector3_mul_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-normalize" title="gimp_vector3_normalize ()">gimp_vector3_normalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-normalize-val" title="gimp_vector3_normalize_val ()">gimp_vector3_normalize_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-neg" title="gimp_vector3_neg ()">gimp_vector3_neg</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-neg-val" title="gimp_vector3_neg_val ()">gimp_vector3_neg_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-add" title="gimp_vector3_add ()">gimp_vector3_add</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-add-val" title="gimp_vector3_add_val ()">gimp_vector3_add_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-sub" title="gimp_vector3_sub ()">gimp_vector3_sub</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-sub-val" title="gimp_vector3_sub_val ()">gimp_vector3_sub_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gdouble</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-inner-product" title="gimp_vector3_inner_product ()">gimp_vector3_inner_product</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gdouble</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-inner-product-val" title="gimp_vector3_inner_product_val ()">gimp_vector3_inner_product_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-cross-product" title="gimp_vector3_cross_product ()">gimp_vector3_cross_product</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-cross-product-val" title="gimp_vector3_cross_product_val ()">gimp_vector3_cross_product_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-rotate" title="gimp_vector3_rotate ()">gimp_vector3_rotate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-rotate-val" title="gimp_vector3_rotate_val ()">gimp_vector3_rotate_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector-2d-to-3d" title="gimp_vector_2d_to_3d ()">gimp_vector_2d_to_3d</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector-2d-to-3d-val" title="gimp_vector_2d_to_3d_val ()">gimp_vector_2d_to_3d_val</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libgimpmath3-GimpVector.html#gimp-vector-3d-to-2d" title="gimp_vector_3d_to_2d ()">gimp_vector_3d_to_2d</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="libgimpmath3-GimpVector.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="other_proto_type">
<col class="other_proto_name">
</colgroup>
<tbody>
<tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2">GimpVector2</a></td>
</tr>
<tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3">GimpVector3</a></td>
</tr>
<tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector4" title="struct GimpVector4">GimpVector4</a></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="libgimpmath3-GimpVector.description"></a><h2>Description</h2>
<p>Utilities to set up and manipulate vectors.</p>
</div>
<div class="refsect1">
<a name="libgimpmath3-GimpVector.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
<a name="gimp-vector2-new"></a><h3>gimp_vector2_new ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
gimp_vector2_new (<em class="parameter"><code><span class="type">gdouble</span> x</code></em>,
                  <em class="parameter"><code><span class="type">gdouble</span> y</code></em>);</pre>
<p>Creates a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> of coordinates <em class="parameter"><code>x</code></em>
 and <em class="parameter"><code>y</code></em>
.</p>
<div class="refsect3">
<a name="gimp-vector2-new.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>x</p></td>
<td class="parameter_description"><p>the X coordinate.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>y</p></td>
<td class="parameter_description"><p>the Y coordinate.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-new.returns"></a><h4>Returns</h4>
<p> the resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-set"></a><h3>gimp_vector2_set ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector2_set (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector</code></em>,
                  <em class="parameter"><code><span class="type">gdouble</span> x</code></em>,
                  <em class="parameter"><code><span class="type">gdouble</span> y</code></em>);</pre>
<p>Sets the X and Y coordinates of <em class="parameter"><code>vector</code></em>
 to <em class="parameter"><code>x</code></em>
 and <em class="parameter"><code>y</code></em>
.</p>
<div class="refsect3">
<a name="gimp-vector2-set.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a pointer to a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>x</p></td>
<td class="parameter_description"><p>the X coordinate.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>y</p></td>
<td class="parameter_description"><p>the Y coordinate.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-length"></a><h3>gimp_vector2_length ()</h3>
<pre class="programlisting"><span class="returnvalue">gdouble</span>
gimp_vector2_length (<em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector</code></em>);</pre>
<p>Computes the length of a 2D vector.</p>
<div class="refsect3">
<a name="gimp-vector2-length.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a pointer to a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-length.returns"></a><h4>Returns</h4>
<p> the length of <em class="parameter"><code>vector</code></em>
(a positive gdouble).</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-length-val"></a><h3>gimp_vector2_length_val ()</h3>
<pre class="programlisting"><span class="returnvalue">gdouble</span>
gimp_vector2_length_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> vector</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-length" title="gimp_vector2_length ()"><code class="function">gimp_vector2_length()</code></a> but the
vector is passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector2-length-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-length-val.returns"></a><h4>Returns</h4>
<p> the length of <em class="parameter"><code>vector</code></em>
(a positive gdouble).</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-mul"></a><h3>gimp_vector2_mul ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector2_mul (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector</code></em>,
                  <em class="parameter"><code><span class="type">gdouble</span> factor</code></em>);</pre>
<p>Multiplies each component of the <em class="parameter"><code>vector</code></em>
 by <em class="parameter"><code>factor</code></em>
. Note that this
is equivalent to multiplying the vectors length by <em class="parameter"><code>factor</code></em>
.</p>
<div class="refsect3">
<a name="gimp-vector2-mul.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a pointer to a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>factor</p></td>
<td class="parameter_description"><p>a scalar.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-mul-val"></a><h3>gimp_vector2_mul_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
gimp_vector2_mul_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> vector</code></em>,
                      <em class="parameter"><code><span class="type">gdouble</span> factor</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-mul" title="gimp_vector2_mul ()"><code class="function">gimp_vector2_mul()</code></a> but the vector is
passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector2-mul-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>factor</p></td>
<td class="parameter_description"><p>a scalar.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-mul-val.returns"></a><h4>Returns</h4>
<p> the resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-normal"></a><h3>gimp_vector2_normal ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
gimp_vector2_normal (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector</code></em>);</pre>
<p>Compute a normalized perpendicular vector to <em class="parameter"><code>vector</code></em>
</p>
<div class="refsect3">
<a name="gimp-vector2-normal.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a pointer to a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-normal.returns"></a><h4>Returns</h4>
<p> a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> perpendicular to <em class="parameter"><code>vector</code></em>
, with a length of 1.0.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-2-8.html#api-index-2.8">2.8</a></p>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-normal-val"></a><h3>gimp_vector2_normal_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
gimp_vector2_normal_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> vector</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-normal" title="gimp_vector2_normal ()"><code class="function">gimp_vector2_normal()</code></a> but the vector
is passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector2-normal-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-normal-val.returns"></a><h4>Returns</h4>
<p> a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> perpendicular to <em class="parameter"><code>vector</code></em>
, with a length of 1.0.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-2-8.html#api-index-2.8">2.8</a></p>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-normalize"></a><h3>gimp_vector2_normalize ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector2_normalize (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector</code></em>);</pre>
<p>Normalizes the <em class="parameter"><code>vector</code></em>
 so the length of the <em class="parameter"><code>vector</code></em>
 is 1.0. The nul
vector will not be changed.</p>
<div class="refsect3">
<a name="gimp-vector2-normalize.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a pointer to a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-normalize-val"></a><h3>gimp_vector2_normalize_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
gimp_vector2_normalize_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> vector</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-normalize" title="gimp_vector2_normalize ()"><code class="function">gimp_vector2_normalize()</code></a> but the
vector is passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector2-normalize-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-normalize-val.returns"></a><h4>Returns</h4>
<p> a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> parallel to <em class="parameter"><code>vector</code></em>
, pointing in the same
direction but with a length of 1.0.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-neg"></a><h3>gimp_vector2_neg ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector2_neg (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector</code></em>);</pre>
<p>Negates the <em class="parameter"><code>vector</code></em>
 (i.e. negate all its coordinates).</p>
<div class="refsect3">
<a name="gimp-vector2-neg.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a pointer to a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-neg-val"></a><h3>gimp_vector2_neg_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
gimp_vector2_neg_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> vector</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-neg" title="gimp_vector2_neg ()"><code class="function">gimp_vector2_neg()</code></a> but the vector
is passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector2-neg-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-neg-val.returns"></a><h4>Returns</h4>
<p> the negated <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-add"></a><h3>gimp_vector2_add ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector2_add (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *result</code></em>,
                  <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector1</code></em>,
                  <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector2</code></em>);</pre>
<p>Computes the sum of two 2D vectors. The resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> is
stored in <em class="parameter"><code>result</code></em>
.</p>
<div class="refsect3">
<a name="gimp-vector2-add.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>result</p></td>
<td class="parameter_description"><p>destination for the resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>a pointer to the first <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>a pointer to the second <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-add-val"></a><h3>gimp_vector2_add_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
gimp_vector2_add_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> vector1</code></em>,
                      <em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> vector2</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-add" title="gimp_vector2_add ()"><code class="function">gimp_vector2_add()</code></a> but the vectors
are passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector2-add-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>the first <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>the second <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-add-val.returns"></a><h4>Returns</h4>
<p> the resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-sub"></a><h3>gimp_vector2_sub ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector2_sub (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *result</code></em>,
                  <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector1</code></em>,
                  <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector2</code></em>);</pre>
<p>Computes the difference of two 2D vectors (<em class="parameter"><code>vector1</code></em>
 minus <em class="parameter"><code>vector2</code></em>
).
The resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> is stored in <em class="parameter"><code>result</code></em>
.</p>
<div class="refsect3">
<a name="gimp-vector2-sub.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>result</p></td>
<td class="parameter_description"><p>the destination for the resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>a pointer to the first <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>a pointer to the second <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-sub-val"></a><h3>gimp_vector2_sub_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
gimp_vector2_sub_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> vector1</code></em>,
                      <em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> vector2</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-sub" title="gimp_vector2_sub ()"><code class="function">gimp_vector2_sub()</code></a> but the vectors
are passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector2-sub-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>the first <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>the second <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-sub-val.returns"></a><h4>Returns</h4>
<p> the resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-inner-product"></a><h3>gimp_vector2_inner_product ()</h3>
<pre class="programlisting"><span class="returnvalue">gdouble</span>
gimp_vector2_inner_product (<em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector1</code></em>,
                            <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector2</code></em>);</pre>
<p>Computes the inner (dot) product of two 2D vectors.
This product is zero if and only if the two vectors are orthogonal.</p>
<div class="refsect3">
<a name="gimp-vector2-inner-product.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>a pointer to the first <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>a pointer to the second <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-inner-product.returns"></a><h4>Returns</h4>
<p> The inner product.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-inner-product-val"></a><h3>gimp_vector2_inner_product_val ()</h3>
<pre class="programlisting"><span class="returnvalue">gdouble</span>
gimp_vector2_inner_product_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> vector1</code></em>,
                                <em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> vector2</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-inner-product" title="gimp_vector2_inner_product ()"><code class="function">gimp_vector2_inner_product()</code></a> but the
vectors are passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector2-inner-product-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>the first <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>the second <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-inner-product-val.returns"></a><h4>Returns</h4>
<p> The inner product.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-cross-product"></a><h3>gimp_vector2_cross_product ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
gimp_vector2_cross_product (<em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector1</code></em>,
                            <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector2</code></em>);</pre>
<p>Compute the cross product of two vectors. The result is a
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> which is orthogonal to both <em class="parameter"><code>vector1</code></em>
 and <em class="parameter"><code>vector2</code></em>
. If
<em class="parameter"><code>vector1</code></em>
 and <em class="parameter"><code>vector2</code></em>
 are parallel, the result will be the nul
vector.</p>
<p>Note that in 2D, this function is useful to test if two vectors are
parallel or not, or to compute the area spawned by two vectors.</p>
<div class="refsect3">
<a name="gimp-vector2-cross-product.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>a pointer to the first <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>a pointer to the second <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-cross-product.returns"></a><h4>Returns</h4>
<p> The cross product.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-cross-product-val"></a><h3>gimp_vector2_cross_product_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
gimp_vector2_cross_product_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> vector1</code></em>,
                                <em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> vector2</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-cross-product" title="gimp_vector2_cross_product ()"><code class="function">gimp_vector2_cross_product()</code></a> but the
vectors are passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector2-cross-product-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>the first <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>the second <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-cross-product-val.returns"></a><h4>Returns</h4>
<p> The cross product.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-rotate"></a><h3>gimp_vector2_rotate ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector2_rotate (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> *vector</code></em>,
                     <em class="parameter"><code><span class="type">gdouble</span> alpha</code></em>);</pre>
<p>Rotates the <em class="parameter"><code>vector</code></em>
 counterclockwise by <em class="parameter"><code>alpha</code></em>
 radians.</p>
<div class="refsect3">
<a name="gimp-vector2-rotate.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a pointer to a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>alpha</p></td>
<td class="parameter_description"><p>an angle (in radians).</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector2-rotate-val"></a><h3>gimp_vector2_rotate_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="returnvalue">GimpVector2</span></a>
gimp_vector2_rotate_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> vector</code></em>,
                         <em class="parameter"><code><span class="type">gdouble</span> alpha</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector2-rotate" title="gimp_vector2_rotate ()"><code class="function">gimp_vector2_rotate()</code></a> but the vector
is passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector2-rotate-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>alpha</p></td>
<td class="parameter_description"><p>an angle (in radians).</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector2-rotate-val.returns"></a><h4>Returns</h4>
<p> a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector2" title="struct GimpVector2"><span class="type">GimpVector2</span></a> representing <em class="parameter"><code>vector</code></em>
rotated by <em class="parameter"><code>alpha</code></em>
radians.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-new"></a><h3>gimp_vector3_new ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
gimp_vector3_new (<em class="parameter"><code><span class="type">gdouble</span> x</code></em>,
                  <em class="parameter"><code><span class="type">gdouble</span> y</code></em>,
                  <em class="parameter"><code><span class="type">gdouble</span> z</code></em>);</pre>
<p>Creates a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> of coordinate <em class="parameter"><code>x</code></em>
, <em class="parameter"><code>y</code></em>
 and <em class="parameter"><code>z</code></em>
.</p>
<div class="refsect3">
<a name="gimp-vector3-new.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>x</p></td>
<td class="parameter_description"><p>the X coordinate.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>y</p></td>
<td class="parameter_description"><p>the Y coordinate.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>z</p></td>
<td class="parameter_description"><p>the Z coordinate.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector3-new.returns"></a><h4>Returns</h4>
<p> the resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-set"></a><h3>gimp_vector3_set ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector3_set (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vector</code></em>,
                  <em class="parameter"><code><span class="type">gdouble</span> x</code></em>,
                  <em class="parameter"><code><span class="type">gdouble</span> y</code></em>,
                  <em class="parameter"><code><span class="type">gdouble</span> z</code></em>);</pre>
<p>Sets the X, Y and Z coordinates of <em class="parameter"><code>vector</code></em>
 to <em class="parameter"><code>x</code></em>
, <em class="parameter"><code>y</code></em>
 and <em class="parameter"><code>z</code></em>
.</p>
<div class="refsect3">
<a name="gimp-vector3-set.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a pointer to a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>x</p></td>
<td class="parameter_description"><p>the X coordinate.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>y</p></td>
<td class="parameter_description"><p>the Y coordinate.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>z</p></td>
<td class="parameter_description"><p>the Z coordinate.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-length"></a><h3>gimp_vector3_length ()</h3>
<pre class="programlisting"><span class="returnvalue">gdouble</span>
gimp_vector3_length (<em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vector</code></em>);</pre>
<p>Computes the length of a 3D vector.</p>
<div class="refsect3">
<a name="gimp-vector3-length.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a pointer to a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector3-length.returns"></a><h4>Returns</h4>
<p> the length of <em class="parameter"><code>vector</code></em>
(a positive gdouble).</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-length-val"></a><h3>gimp_vector3_length_val ()</h3>
<pre class="programlisting"><span class="returnvalue">gdouble</span>
gimp_vector3_length_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> vector</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-length" title="gimp_vector3_length ()"><code class="function">gimp_vector3_length()</code></a> but the vector
is passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector3-length-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector3-length-val.returns"></a><h4>Returns</h4>
<p> the length of <em class="parameter"><code>vector</code></em>
(a positive gdouble).</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-mul"></a><h3>gimp_vector3_mul ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector3_mul (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vector</code></em>,
                  <em class="parameter"><code><span class="type">gdouble</span> factor</code></em>);</pre>
<p>Multiplies each component of the <em class="parameter"><code>vector</code></em>
 by <em class="parameter"><code>factor</code></em>
. Note that
this is equivalent to multiplying the vectors length by <em class="parameter"><code>factor</code></em>
.</p>
<div class="refsect3">
<a name="gimp-vector3-mul.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a pointer to a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>factor</p></td>
<td class="parameter_description"><p>a scalar.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-mul-val"></a><h3>gimp_vector3_mul_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
gimp_vector3_mul_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> vector</code></em>,
                      <em class="parameter"><code><span class="type">gdouble</span> factor</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-mul" title="gimp_vector3_mul ()"><code class="function">gimp_vector3_mul()</code></a> but the vector is
passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector3-mul-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>factor</p></td>
<td class="parameter_description"><p>a scalar.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector3-mul-val.returns"></a><h4>Returns</h4>
<p> the resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-normalize"></a><h3>gimp_vector3_normalize ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector3_normalize (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vector</code></em>);</pre>
<p>Normalizes the <em class="parameter"><code>vector</code></em>
 so the length of the <em class="parameter"><code>vector</code></em>
 is 1.0. The nul
vector will not be changed.</p>
<div class="refsect3">
<a name="gimp-vector3-normalize.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a pointer to a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-normalize-val"></a><h3>gimp_vector3_normalize_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
gimp_vector3_normalize_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> vector</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-normalize" title="gimp_vector3_normalize ()"><code class="function">gimp_vector3_normalize()</code></a> but the
vector is passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector3-normalize-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector3-normalize-val.returns"></a><h4>Returns</h4>
<p> a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> parallel to <em class="parameter"><code>vector</code></em>
, pointing in the same
direction but with a length of 1.0.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-neg"></a><h3>gimp_vector3_neg ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector3_neg (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vector</code></em>);</pre>
<p>Negates the <em class="parameter"><code>vector</code></em>
 (i.e. negate all its coordinates).</p>
<div class="refsect3">
<a name="gimp-vector3-neg.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a pointer to a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-neg-val"></a><h3>gimp_vector3_neg_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
gimp_vector3_neg_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> vector</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-neg" title="gimp_vector3_neg ()"><code class="function">gimp_vector3_neg()</code></a> but the vector
is passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector3-neg-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector3-neg-val.returns"></a><h4>Returns</h4>
<p> the negated <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-add"></a><h3>gimp_vector3_add ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector3_add (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *result</code></em>,
                  <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vector1</code></em>,
                  <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vector2</code></em>);</pre>
<p>Computes the sum of two 3D vectors. The resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> is
stored in <em class="parameter"><code>result</code></em>
.</p>
<div class="refsect3">
<a name="gimp-vector3-add.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>result</p></td>
<td class="parameter_description"><p>destination for the resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>a pointer to the first <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>a pointer to the second <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-add-val"></a><h3>gimp_vector3_add_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
gimp_vector3_add_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> vector1</code></em>,
                      <em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> vector2</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-add" title="gimp_vector3_add ()"><code class="function">gimp_vector3_add()</code></a> but the vectors
are passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector3-add-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector3-add-val.returns"></a><h4>Returns</h4>
<p> the resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-sub"></a><h3>gimp_vector3_sub ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector3_sub (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *result</code></em>,
                  <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vector1</code></em>,
                  <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vector2</code></em>);</pre>
<p>Computes the difference of two 3D vectors (<em class="parameter"><code>vector1</code></em>
 minus <em class="parameter"><code>vector2</code></em>
).
The resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> is stored in <em class="parameter"><code>result</code></em>
.</p>
<div class="refsect3">
<a name="gimp-vector3-sub.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>result</p></td>
<td class="parameter_description"><p>the destination for the resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>a pointer to the first <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>a pointer to the second <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-sub-val"></a><h3>gimp_vector3_sub_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
gimp_vector3_sub_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> vector1</code></em>,
                      <em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> vector2</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-sub" title="gimp_vector3_sub ()"><code class="function">gimp_vector3_sub()</code></a> but the vectors
are passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector3-sub-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector3-sub-val.returns"></a><h4>Returns</h4>
<p> the resulting <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-inner-product"></a><h3>gimp_vector3_inner_product ()</h3>
<pre class="programlisting"><span class="returnvalue">gdouble</span>
gimp_vector3_inner_product (<em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vector1</code></em>,
                            <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vector2</code></em>);</pre>
<p>Computes the inner (dot) product of two 3D vectors. This product
is zero if and only if the two vectors are orthogonal.</p>
<div class="refsect3">
<a name="gimp-vector3-inner-product.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>a pointer to the first <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>a pointer to the second <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector3-inner-product.returns"></a><h4>Returns</h4>
<p> The inner product.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-inner-product-val"></a><h3>gimp_vector3_inner_product_val ()</h3>
<pre class="programlisting"><span class="returnvalue">gdouble</span>
gimp_vector3_inner_product_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> vector1</code></em>,
                                <em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> vector2</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-inner-product" title="gimp_vector3_inner_product ()"><code class="function">gimp_vector3_inner_product()</code></a> but the
vectors are passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector3-inner-product-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>the first <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>the second <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector3-inner-product-val.returns"></a><h4>Returns</h4>
<p> The inner product.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-cross-product"></a><h3>gimp_vector3_cross_product ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
gimp_vector3_cross_product (<em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vector1</code></em>,
                            <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vector2</code></em>);</pre>
<p>Compute the cross product of two vectors. The result is a
<a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> which is orthogonal to both <em class="parameter"><code>vector1</code></em>
 and <em class="parameter"><code>vector2</code></em>
. If
<em class="parameter"><code>vector1</code></em>
 and <em class="parameter"><code>vector2</code></em>
 and parallel, the result will be the nul
vector.</p>
<p>This function can be used to compute the normal of the plane
defined by <em class="parameter"><code>vector1</code></em>
 and <em class="parameter"><code>vector2</code></em>
.</p>
<div class="refsect3">
<a name="gimp-vector3-cross-product.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>a pointer to the first <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>a pointer to the second <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector3-cross-product.returns"></a><h4>Returns</h4>
<p> The cross product.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-cross-product-val"></a><h3>gimp_vector3_cross_product_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
gimp_vector3_cross_product_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> vector1</code></em>,
                                <em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> vector2</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-cross-product" title="gimp_vector3_cross_product ()"><code class="function">gimp_vector3_cross_product()</code></a> but the
vectors are passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector3-cross-product-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector1</p></td>
<td class="parameter_description"><p>the first <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vector2</p></td>
<td class="parameter_description"><p>the second <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector3-cross-product-val.returns"></a><h4>Returns</h4>
<p> The cross product.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-rotate"></a><h3>gimp_vector3_rotate ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector3_rotate (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vector</code></em>,
                     <em class="parameter"><code><span class="type">gdouble</span> alpha</code></em>,
                     <em class="parameter"><code><span class="type">gdouble</span> beta</code></em>,
                     <em class="parameter"><code><span class="type">gdouble</span> gamma</code></em>);</pre>
<p>Rotates the <em class="parameter"><code>vector</code></em>
 around the three axis (Z, Y, and X) by <em class="parameter"><code>alpha</code></em>
,
<em class="parameter"><code>beta</code></em>
 and <em class="parameter"><code>gamma</code></em>
, respectively.</p>
<p>Note that the order of the rotation is very important. If you
expect a vector to be rotated around X, and then around Y, you will
have to call this function twice. Also, it is often wise to call
this function with only one of <em class="parameter"><code>alpha</code></em>
, <em class="parameter"><code>beta</code></em>
 and <em class="parameter"><code>gamma</code></em>
 non-zero.</p>
<div class="refsect3">
<a name="gimp-vector3-rotate.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a pointer to a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>alpha</p></td>
<td class="parameter_description"><p>the angle (in radian) of rotation around the Z axis.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>beta</p></td>
<td class="parameter_description"><p>the angle (in radian) of rotation around the Y axis.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>gamma</p></td>
<td class="parameter_description"><p>the angle (in radian) of rotation around the X axis.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector3-rotate-val"></a><h3>gimp_vector3_rotate_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
gimp_vector3_rotate_val (<em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> vector</code></em>,
                         <em class="parameter"><code><span class="type">gdouble</span> alpha</code></em>,
                         <em class="parameter"><code><span class="type">gdouble</span> beta</code></em>,
                         <em class="parameter"><code><span class="type">gdouble</span> gamma</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector3-rotate" title="gimp_vector3_rotate ()"><code class="function">gimp_vector3_rotate()</code></a> but the vectors
are passed by value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector3-rotate-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>vector</p></td>
<td class="parameter_description"><p>a <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>alpha</p></td>
<td class="parameter_description"><p>the angle (in radian) of rotation around the Z axis.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>beta</p></td>
<td class="parameter_description"><p>the angle (in radian) of rotation around the Y axis.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>gamma</p></td>
<td class="parameter_description"><p>the angle (in radian) of rotation around the X axis.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector3-rotate-val.returns"></a><h4>Returns</h4>
<p> the rotated vector.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector-2d-to-3d"></a><h3>gimp_vector_2d_to_3d ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector_2d_to_3d (<em class="parameter"><code><span class="type">gint</span> sx</code></em>,
                      <em class="parameter"><code><span class="type">gint</span> sy</code></em>,
                      <em class="parameter"><code><span class="type">gint</span> w</code></em>,
                      <em class="parameter"><code><span class="type">gint</span> h</code></em>,
                      <em class="parameter"><code><span class="type">gint</span> x</code></em>,
                      <em class="parameter"><code><span class="type">gint</span> y</code></em>,
                      <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vp</code></em>,
                      <em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *p</code></em>);</pre>
<p>\"Compute screen (sx, sy) - (sx + w, sy + h) to 3D unit square
mapping. The plane to map to is given in the z field of p. The
observer is located at position vp (vp-&gt;z != 0.0).\"</p>
<p>In other words, this computes the projection of the point (<em class="parameter"><code>x</code></em>
, <em class="parameter"><code>y</code></em>
)
to the plane z = <em class="parameter"><code>p-&gt;z</code></em>
 (parallel to XY), from the <em class="parameter"><code>vp</code></em>
 point of view
through the screen (<em class="parameter"><code>sx</code></em>
, <em class="parameter"><code>sy</code></em>
)-&gt;(<em class="parameter"><code>sx</code></em>
 + <em class="parameter"><code>w</code></em>
, <em class="parameter"><code>sy</code></em>
 + <em class="parameter"><code>h</code></em>
)</p>
<div class="refsect3">
<a name="gimp-vector-2d-to-3d.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>sx</p></td>
<td class="parameter_description"><p>the abscissa of the upper-left screen rectangle.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>sy</p></td>
<td class="parameter_description"><p>the ordinate of the upper-left screen rectangle.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>w</p></td>
<td class="parameter_description"><p>the width of the screen rectangle.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>h</p></td>
<td class="parameter_description"><p>the height of the screen rectangle.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>x</p></td>
<td class="parameter_description"><p>the abscissa of the point in the screen rectangle to map.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>y</p></td>
<td class="parameter_description"><p>the ordinate of the point in the screen rectangle to map.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vp</p></td>
<td class="parameter_description"><p>the position of the observer.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>p</p></td>
<td class="parameter_description"><p>the resulting point.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector-2d-to-3d-val"></a><h3>gimp_vector_2d_to_3d_val ()</h3>
<pre class="programlisting"><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="returnvalue">GimpVector3</span></a>
gimp_vector_2d_to_3d_val (<em class="parameter"><code><span class="type">gint</span> sx</code></em>,
                          <em class="parameter"><code><span class="type">gint</span> sy</code></em>,
                          <em class="parameter"><code><span class="type">gint</span> w</code></em>,
                          <em class="parameter"><code><span class="type">gint</span> h</code></em>,
                          <em class="parameter"><code><span class="type">gint</span> x</code></em>,
                          <em class="parameter"><code><span class="type">gint</span> y</code></em>,
                          <em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> vp</code></em>,
                          <em class="parameter"><code><a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> p</code></em>);</pre>
<p>This function is identical to <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector-2d-to-3d" title="gimp_vector_2d_to_3d ()"><code class="function">gimp_vector_2d_to_3d()</code></a> but the
position of the <em class="parameter"><code>observer</code></em>
 and the resulting point <em class="parameter"><code>p</code></em>
 are passed by
value rather than by reference.</p>
<div class="refsect3">
<a name="gimp-vector-2d-to-3d-val.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>sx</p></td>
<td class="parameter_description"><p>the abscissa of the upper-left screen rectangle.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>sy</p></td>
<td class="parameter_description"><p>the ordinate of the upper-left screen rectangle.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>w</p></td>
<td class="parameter_description"><p>the width of the screen rectangle.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>h</p></td>
<td class="parameter_description"><p>the height of the screen rectangle.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>x</p></td>
<td class="parameter_description"><p>the abscissa of the point in the screen rectangle to map.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>y</p></td>
<td class="parameter_description"><p>the ordinate of the point in the screen rectangle to map.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vp</p></td>
<td class="parameter_description"><p>position of the observer.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>p</p></td>
<td class="parameter_description"><p>the resulting point.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gimp-vector-2d-to-3d-val.returns"></a><h4>Returns</h4>
<p> the computed <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> point.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gimp-vector-3d-to-2d"></a><h3>gimp_vector_3d_to_2d ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gimp_vector_3d_to_2d (<em class="parameter"><code><span class="type">gint</span> sx</code></em>,
                      <em class="parameter"><code><span class="type">gint</span> sy</code></em>,
                      <em class="parameter"><code><span class="type">gint</span> w</code></em>,
                      <em class="parameter"><code><span class="type">gint</span> h</code></em>,
                      <em class="parameter"><code><span class="type">gdouble</span> *x</code></em>,
                      <em class="parameter"><code><span class="type">gdouble</span> *y</code></em>,
                      <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *vp</code></em>,
                      <em class="parameter"><code>const <a class="link" href="libgimpmath3-GimpVector.html#GimpVector3" title="struct GimpVector3"><span class="type">GimpVector3</span></a> *p</code></em>);</pre>
<p>Convert the given 3D point to 2D (project it onto the viewing
plane, (sx, sy, 0) - (sx + w, sy + h, 0). The input is assumed to
be in the unit square (0, 0, z) - (1, 1, z). The viewpoint of the
observer is passed in vp.</p>
<p>This is basically the opposite of <a class="link" href="libgimpmath3-GimpVector.html#gimp-vector-2d-to-3d" title="gimp_vector_2d_to_3d ()"><code class="function">gimp_vector_2d_to_3d()</code></a>.</p>
<div class="refsect3">
<a name="gimp-vector-3d-to-2d.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>sx</p></td>
<td class="parameter_description"><p>the abscissa of the upper-left screen rectangle.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>sy</p></td>
<td class="parameter_description"><p>the ordinate of the upper-left screen rectangle.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>w</p></td>
<td class="parameter_description"><p>the width of the screen rectangle.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>h</p></td>
<td class="parameter_description"><p>the height of the screen rectangle.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>x</p></td>
<td class="parameter_description"><p>the abscissa of the point in the screen rectangle to map (return value).</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>y</p></td>
<td class="parameter_description"><p>the ordinate of the point in the screen rectangle to map (return value).</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>vp</p></td>
<td class="parameter_description"><p>position of the observer.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>p</p></td>
<td class="parameter_description"><p>the 3D point to project to the plane.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
<div class="refsect1">
<a name="libgimpmath3-GimpVector.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="GimpVector2"></a><h3>struct GimpVector2</h3>
<pre class="programlisting">struct GimpVector2 {
  gdouble x, y;
};
</pre>
<p>A two dimensional vector.</p>
<div class="refsect3">
<a name="GimpVector2.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="struct_members_name">
<col class="struct_members_description">
<col width="200px" class="struct_members_annotations">
</colgroup>
<tbody>
<tr>
<td class="struct_member_name"><p><span class="type">gdouble</span> <em class="structfield"><code><a name="GimpVector2.x"></a>x</code></em>;</p></td>
<td class="struct_member_description"><p>the x axis</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">gdouble</span> <em class="structfield"><code><a name="GimpVector2.y"></a>y</code></em>;</p></td>
<td class="struct_member_description"><p>the y axis</p></td>
<td class="struct_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="GimpVector3"></a><h3>struct GimpVector3</h3>
<pre class="programlisting">struct GimpVector3 {
  gdouble x, y, z;
};
</pre>
<p>A three dimensional vector.</p>
<div class="refsect3">
<a name="GimpVector3.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="struct_members_name">
<col class="struct_members_description">
<col width="200px" class="struct_members_annotations">
</colgroup>
<tbody>
<tr>
<td class="struct_member_name"><p><span class="type">gdouble</span> <em class="structfield"><code><a name="GimpVector3.x"></a>x</code></em>;</p></td>
<td class="struct_member_description"><p>the x axis</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">gdouble</span> <em class="structfield"><code><a name="GimpVector3.y"></a>y</code></em>;</p></td>
<td class="struct_member_description"><p>the y axis</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">gdouble</span> <em class="structfield"><code><a name="GimpVector3.z"></a>z</code></em>;</p></td>
<td class="struct_member_description"><p>the z axis</p></td>
<td class="struct_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="GimpVector4"></a><h3>struct GimpVector4</h3>
<pre class="programlisting">struct GimpVector4 {
  gdouble x, y, z, w;
};
</pre>
<p>A four dimensional vector.</p>
<div class="refsect3">
<a name="GimpVector4.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="struct_members_name">
<col class="struct_members_description">
<col width="200px" class="struct_members_annotations">
</colgroup>
<tbody>
<tr>
<td class="struct_member_name"><p><span class="type">gdouble</span> <em class="structfield"><code><a name="GimpVector4.x"></a>x</code></em>;</p></td>
<td class="struct_member_description"><p>the x axis</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">gdouble</span> <em class="structfield"><code><a name="GimpVector4.y"></a>y</code></em>;</p></td>
<td class="struct_member_description"><p>the y axis</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">gdouble</span> <em class="structfield"><code><a name="GimpVector4.z"></a>z</code></em>;</p></td>
<td class="struct_member_description"><p>the z axis</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">gdouble</span> <em class="structfield"><code><a name="GimpVector4.w"></a>w</code></em>;</p></td>
<td class="struct_member_description"><p>the w axis</p></td>
<td class="struct_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
<div class="refsect1">
<a name="libgimpmath3-GimpVector.see-also"></a><h2>See Also</h2>
<p><a class="link" href="libgimpmath3-GimpMatrix.html#GimpMatrix2" title="struct GimpMatrix2"><span class="type">GimpMatrix2</span></a>, <a class="link" href="libgimpmath3-GimpMatrix.html#GimpMatrix3" title="struct GimpMatrix3"><span class="type">GimpMatrix3</span></a>, <a class="link" href="libgimpmath3-GimpMatrix.html#GimpMatrix4" title="struct GimpMatrix4"><span class="type">GimpMatrix4</span></a></p>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.33.0</div>
</body>
</html>